#include "qqmusic.h"

#include <QApplication>
#include <QSharedMemory>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    QSharedMemory sharedMemory("QQMusic");
    //当第一次运行的时候，由于共享内存的空间没有创建，这里attach()一定会失败,返回false
    //当第二次运行的时候，由于共享内存的空间已经被前一次运行的申请好了，这里第二个实例再去关联
    if(sharedMemory.attach())
    {
        QMessageBox::information(nullptr, "QQMusic提示", "QQMusic已经在运行了");
        return 0;
    }

    sharedMemory.create(1);


    QQMusic w;
    w.show();
    return a.exec();
}


//第160节课一行
//因为每次打开播放器，都需要重新加载歌曲
//上一次在播放器中操作的历史记录都没有了，例如收藏喜欢和最近播放的音乐都没有了
//而且每次打开时都需要从磁盘重新加载，太过于复杂麻烦
//所以最好能将每次在播放器上的操作记录下来
//比如：加载过的歌曲  收藏的歌曲  最近播放过的歌曲
//将上述信息记录下来后，可以将上次的操作记录恢复。


//每次关闭的时候，保存操作记录，程序启动的时候恢复
//1，采用本地文件来保存
//2，使用数据库



//Oracle DB2 SQLServer MySQL  数据库管理系统  -->缺陷：使用时必须要先安装环境
//SQLite  无需安装的，轻量级的，开源的，内嵌式的数据库管理系统，支持标准的SQL语法
//Qt环境在安装的时候，已经将SQLite环境配置好了,


//当点击关闭按钮的时候，应该将歌曲列表保存到SQLite数据库，当程序启动的时候，应该从数据库中读取到所以的Music对象的信息
//然后初始化musicList，最后更新每个CommonPage页面的QListWidget，调用reFresh
//1，需要链接并初始化SQLite数据库，创建表格MusicInfo
//2，读取数据库中歌曲信息操作 -- select
//3，将歌曲信息写入到数据库 -- update insert




//有时候，鼠标点击落在BtForm上，可能会引起主窗口的移动
//猜想:点击按钮时  禁止拖拽







//有些时候当点击debug / release目录下的可执行程序，如果弹出找不到xxx.dll, 需要把xxxx/mingw64_ 添加到系统环境变量path
//   D:\Qt\5.14.2\mingw73_64\bin



//禁止程序运行出多个实例。通过共享内存











